﻿using Little.Soldier.SWIFT;
using Little.Soldier.SWIFT.Definition;
using System.Collections.Generic;
using System.ComponentModel;

namespace Little.Soldier.SWIFT.Messages.Category8
{
  public class MT800 : SwiftMessage
  {
    private static SwiftMessageDefinition MessageDefinition;
    private static SwiftTagDefinition U0002;
    private static SwiftTagSubItemDefinition U0003;
    private static SwiftTagChoiceDefinition U0004;
    private static SwiftTagDefinition U0005;
    private static SwiftTagSubItemDefinition U0006;
    private static SwiftTagSubItemDefinition U0007;
    private static SwiftTagDefinition U0008;
    private static SwiftTagSubItemDefinition U000E;
    private static SwiftTagSequenceDefinition U000F;
    private static SwiftTagDefinition U0010;
    private static SwiftTagSubItemDefinition U0011;
    private static SwiftTagDefinition U0012;
    private static SwiftTagSubItemDefinition U0013;
    private static SwiftTagDefinition U0014;
    private static SwiftTagSubItemDefinition U0015;
    private static SwiftTagSubItemDefinition U0016;
    private static SwiftTagSubItemDefinition U0017;
    private static SwiftTagDefinition U0018;
    private static SwiftTagSubItemDefinition U0019;
    private static SwiftTagSubItemDefinition U001A;
    private static SwiftTagDefinition U001B;
    private static SwiftTagSequenceDefinition U001C;
    private static SwiftTagDefinition U001D;
    private static SwiftTagSubItemDefinition U001E;
    private static SwiftTagSubItemDefinition U001F;
    private static SwiftTagDefinition U007F;
    private static SwiftTagSubItemDefinition U0080;
    private static SwiftTagDefinition U0081;
    private static SwiftTagSubItemDefinition U0082;
    private static SwiftTagSubItemDefinition U0083;
    private static SwiftTagSubItemDefinition U0084;
    private static SwiftTagChoiceDefinition U0086;
    private static SwiftTagDefinition U0087;
    private static SwiftTagSubItemDefinition U0088;
    private static SwiftTagSubItemDefinition U0089;
    private static SwiftTagDefinition U008A;
    private static SwiftTagSubItemDefinition U008B;
    private static SwiftTagSubItemDefinition U008C;
    private static SwiftTagChoiceDefinition U008D;
    private static SwiftTagDefinition U008E;
    private static SwiftTagSubItemDefinition U008F;
    private static SwiftTagSubItemDefinition U0090;
    private static SwiftTagDefinition U0091;
    private static SwiftTagSubItemDefinition U0092;
    private static SwiftTagSubItemDefinition U0093;
    private static SwiftTagDefinition U0094;
    private static SwiftTagSubItemDefinition U0095;
    private static SwiftTagSubItemDefinition U0096;
    private static SwiftTagChoiceDefinition U0097;
    private static SwiftTagDefinition U0098;
    private static SwiftTagSubItemDefinition U0099;
    private static SwiftTagSubItemDefinition U009A;
    private static SwiftTagDefinition U009B;
    private static SwiftTagSubItemDefinition U009C;
    private static SwiftTagSubItemDefinition U009D;
    private static SwiftTagDefinition U009E;
    private static SwiftTagSubItemDefinition U009F;
    private static SwiftTagSubItemDefinition U0001U0002;
    private static SwiftTagDefinition U0002U0002;

    [Description("Transaction Reference Number")]
    public Tag20 TransactionReferenceNumber_20
    {
      get
      {
        return new Tag20((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0002);
      }
    }

    [Description("Transaction Reference Number")]
    public Tag20 Tag20_TransactionReferenceNumber
    {
      get
      {
        return this.TransactionReferenceNumber_20;
      }
    }

    [Description("Selling Agent")]
    public Tag51A SellingAgent_51A
    {
      get
      {
        return new Tag51A((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0005);
      }
    }

    [Description("Selling Agent")]
    public Tag51A Tag51A_SellingAgent
    {
      get
      {
        return this.SellingAgent_51A;
      }
    }

    [Description("Selling Agent")]
    public Tag51C SellingAgent_51C
    {
      get
      {
        return new Tag51C((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0008);
      }
    }

    [Description("Selling Agent")]
    public Tag51C Tag51C_SellingAgent
    {
      get
      {
        return this.SellingAgent_51C;
      }
    }

    [Description("Purchase Agreement Details")]
    public MT800.SequenceAClass[] SequenceA
    {
      get
      {
        int index = -1;
        List<MT800.SequenceAClass> list = new List<MT800.SequenceAClass>();
        int count;
        do
        {
          ++index;
          MT800.SequenceAClass sequenceAclass = new MT800.SequenceAClass((SwiftElement) this, index, false);
          count = this.ListTags((SwiftElement) sequenceAclass).Count;
          if (count > 0)
            list.Add(sequenceAclass);
        }
        while (count > 0);
        return list.ToArray();
      }
    }

    [Description("Settlement Details")]
    public MT800.SequenceBClass SequenceB
    {
      get
      {
        return new MT800.SequenceBClass((SwiftElement) this, 0, false);
      }
    }

    public MT800()
      : base(true)
    {
    }

    public MT800(SwiftMessage message)
      : base(message)
    {
    }

    public MT800.SequenceAClass AddSequenceA()
    {
      return new MT800.SequenceAClass((SwiftElement) this, this.SequenceA.Length, true);
    }

    public void RemoveSequenceA(MT800.SequenceAClass sequence)
    {
      foreach (SwiftTag tag in this.ListTags((SwiftElement) sequence))
          this.RemoveTag(tag);
    }

    internal override SwiftMessageDefinition MsgDefinition()
    {
      return MT800.MessageDefinition;
    }

    protected override void InitSwiftMessageDefinition()
    {
      MT800.MessageDefinition = new SwiftMessageDefinition("MT800", "T/C Sales and Settlement Advice [Single]");
      MT800.U0002 = new SwiftTagDefinition("TransactionReferenceNumber_20", "Transaction Reference Number");
      MT800.U0002.TagName = ":20:";
      MT800.U0003 = new SwiftTagSubItemDefinition("Reference", "Transaction Reference Number");
      MT800.U0002.Elements.Add((SwiftDefinitionElement) MT800.U0003);
      MT800.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT800.U0002);
      MT800.U0004 = new SwiftTagChoiceDefinition("Choice", "");
      MT800.U0004.Multiple = true;
      MT800.U0005 = new SwiftTagDefinition("SellingAgent_51A", "Selling Agent");
      MT800.U0005.TagName = ":51A:";
      MT800.U0006 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT800.U0006.Mandatory = false;
      MT800.U0005.Elements.Add((SwiftDefinitionElement) MT800.U0006);
      MT800.U0007 = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT800.U0005.Elements.Add((SwiftDefinitionElement) MT800.U0007);
      MT800.U0004.Elements.Add((SwiftDefinitionElement) MT800.U0005);
      MT800.U0008 = new SwiftTagDefinition("SellingAgent_51C", "Selling Agent");
      MT800.U0008.TagName = ":51C:/";
      MT800.U000E = new SwiftTagSubItemDefinition("Account", "Account");
      MT800.U0008.Elements.Add((SwiftDefinitionElement) MT800.U000E);
      MT800.U0004.Elements.Add((SwiftDefinitionElement) MT800.U0008);
      MT800.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT800.U0004);
      MT800.U000F = new SwiftTagSequenceDefinition("SequenceA", "Purchase Agreement Details");
      MT800.U000F.Multiple = true;
      MT800.U0010 = new SwiftTagDefinition("PurchaseAgreementID_A_23", "Purchase Agreement ID");
      MT800.U0010.TagName = ":23:";
      MT800.U0011 = new SwiftTagSubItemDefinition("PurchaseAgreementID", "Purchase Agreement ID");
      MT800.U0010.Elements.Add((SwiftDefinitionElement) MT800.U0011);
      MT800.U000F.Elements.Add((SwiftDefinitionElement) MT800.U0010);
      MT800.U0012 = new SwiftTagDefinition("SalesDate_30", "Sales Date");
      MT800.U0012.TagName = ":30:";
      MT800.U0012.Mandatory = false;
      MT800.U0013 = new SwiftTagSubItemDefinition("Date", "Date");
      MT800.U0012.Elements.Add((SwiftDefinitionElement) MT800.U0013);
      MT800.U000F.Elements.Add((SwiftDefinitionElement) MT800.U0012);
      MT800.U0014 = new SwiftTagDefinition("SerialNumbers_A_26A", "Serial  Numbers");
      MT800.U0014.TagName = ":26A:";
      MT800.U0014.Multiple = true;
      MT800.U0015 = new SwiftTagSubItemDefinition("Number1", "Number1");
      MT800.U0014.Elements.Add((SwiftDefinitionElement) MT800.U0015);
      MT800.U0016 = new SwiftTagSubItemDefinition("Number2", "Number2");
      MT800.U0016.Mandatory = false;
      MT800.U0017 = new SwiftTagSubItemDefinition("Number2_1", "Number2");
      MT800.U0016.Elements.Add((SwiftDefinitionElement) MT800.U0017);
      MT800.U0014.Elements.Add((SwiftDefinitionElement) MT800.U0016);
      MT800.U000F.Elements.Add((SwiftDefinitionElement) MT800.U0014);
      MT800.U0018 = new SwiftTagDefinition("FaceAmount_A_33B", "Face Amount");
      MT800.U0018.TagName = ":33B:";
      MT800.U0019 = new SwiftTagSubItemDefinition("Currency", "Currency");
      MT800.U0018.Elements.Add((SwiftDefinitionElement) MT800.U0019);
      MT800.U001A = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT800.U0018.Elements.Add((SwiftDefinitionElement) MT800.U001A);
      MT800.U000F.Elements.Add((SwiftDefinitionElement) MT800.U0018);
      MT800.U001B = new SwiftTagDefinition("AdditionalAmounts_A_73", "Additional Amounts");
      MT800.U001B.TagName = ":73:";
      MT800.U001B.Mandatory = false;
      MT800.U000F.Elements.Add((SwiftDefinitionElement) MT800.U001B);
      MT800.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT800.U000F);
      MT800.U001C = new SwiftTagSequenceDefinition("SequenceB", "Settlement Details");
      MT800.U001D = new SwiftTagDefinition("SellingAgentAmount_B_34B", "Selling Agent Amount");
      MT800.U001D.TagName = ":34B:";
      MT800.U001E = new SwiftTagSubItemDefinition("Currency", "Currency");
      MT800.U001D.Elements.Add((SwiftDefinitionElement) MT800.U001E);
      MT800.U001F = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT800.U001D.Elements.Add((SwiftDefinitionElement) MT800.U001F);
      MT800.U001C.Elements.Add((SwiftDefinitionElement) MT800.U001D);
      MT800.U007F = new SwiftTagDefinition("SellingAgentsNumberOfPAs_B_16A", "Selling Agents Number Of PAs");
      MT800.U007F.TagName = ":16A:";
      MT800.U0080 = new SwiftTagSubItemDefinition("Number", "Number");
      MT800.U007F.Elements.Add((SwiftDefinitionElement) MT800.U0080);
      MT800.U001C.Elements.Add((SwiftDefinitionElement) MT800.U007F);
      MT800.U0081 = new SwiftTagDefinition("SettlementAmount_B_32A", "Settlement Amount");
      MT800.U0081.TagName = ":32A:";
      MT800.U0082 = new SwiftTagSubItemDefinition("Date", "Date");
      MT800.U0081.Elements.Add((SwiftDefinitionElement) MT800.U0082);
      MT800.U0083 = new SwiftTagSubItemDefinition("Currency", "Currency");
      MT800.U0081.Elements.Add((SwiftDefinitionElement) MT800.U0083);
      MT800.U0084 = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT800.U0081.Elements.Add((SwiftDefinitionElement) MT800.U0084);
      MT800.U001C.Elements.Add((SwiftDefinitionElement) MT800.U0081);
      MT800.U0086 = new SwiftTagChoiceDefinition("Choice", "");
      MT800.U0086.Mandatory = false;
      MT800.U0086.Multiple = true;
      MT800.U0087 = new SwiftTagDefinition("RemittingAgent_B_52A", "Remitting Agent");
      MT800.U0087.TagName = ":52A:";
      MT800.U0088 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT800.U0088.Mandatory = false;
      MT800.U0087.Elements.Add((SwiftDefinitionElement) MT800.U0088);
      MT800.U0089 = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT800.U0087.Elements.Add((SwiftDefinitionElement) MT800.U0089);
      MT800.U0086.Elements.Add((SwiftDefinitionElement) MT800.U0087);
      MT800.U008A = new SwiftTagDefinition("RemittingAgent_B_52D", "Remitting Agent");
      MT800.U008A.TagName = ":52D:";
      MT800.U008B = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT800.U008B.Mandatory = false;
      MT800.U008A.Elements.Add((SwiftDefinitionElement) MT800.U008B);
      MT800.U008C = new SwiftTagSubItemDefinition("NameAndAddress", "Name And Address");
      MT800.U008A.Elements.Add((SwiftDefinitionElement) MT800.U008C);
      MT800.U0086.Elements.Add((SwiftDefinitionElement) MT800.U008A);
      MT800.U001C.Elements.Add((SwiftDefinitionElement) MT800.U0086);
      MT800.U008D = new SwiftTagChoiceDefinition("Choice", "");
      MT800.U008D.Mandatory = false;
      MT800.U008D.Multiple = true;
      MT800.U008E = new SwiftTagDefinition("SendersCorrespondent_B_53A", "Sender's Correspondent");
      MT800.U008E.TagName = ":53A:";
      MT800.U008F = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT800.U008F.Mandatory = false;
      MT800.U008E.Elements.Add((SwiftDefinitionElement) MT800.U008F);
      MT800.U0090 = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT800.U008E.Elements.Add((SwiftDefinitionElement) MT800.U0090);
      MT800.U008D.Elements.Add((SwiftDefinitionElement) MT800.U008E);
      MT800.U0091 = new SwiftTagDefinition("SendersCorrespondent_B_53B", "Sender's Correspondent");
      MT800.U0091.TagName = ":53B:";
      MT800.U0092 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT800.U0092.Mandatory = false;
      MT800.U0091.Elements.Add((SwiftDefinitionElement) MT800.U0092);
      MT800.U0093 = new SwiftTagSubItemDefinition("Location", "Location");
      MT800.U0093.Mandatory = false;
      MT800.U0091.Elements.Add((SwiftDefinitionElement) MT800.U0093);
      MT800.U008D.Elements.Add((SwiftDefinitionElement) MT800.U0091);
      MT800.U0094 = new SwiftTagDefinition("SendersCorrespondent_B_53D", "Sender's Correspondent");
      MT800.U0094.TagName = ":53D:";
      MT800.U0095 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT800.U0095.Mandatory = false;
      MT800.U0094.Elements.Add((SwiftDefinitionElement) MT800.U0095);
      MT800.U0096 = new SwiftTagSubItemDefinition("NameAndAddress", "Name And Address");
      MT800.U0094.Elements.Add((SwiftDefinitionElement) MT800.U0096);
      MT800.U008D.Elements.Add((SwiftDefinitionElement) MT800.U0094);
      MT800.U001C.Elements.Add((SwiftDefinitionElement) MT800.U008D);
      MT800.U0097 = new SwiftTagChoiceDefinition("Choice", "");
      MT800.U0097.Mandatory = false;
      MT800.U0097.Multiple = true;
      MT800.U0098 = new SwiftTagDefinition("ReceiversCorrespondent_B_54A", "Receiver's Correspondent");
      MT800.U0098.TagName = ":54A:";
      MT800.U0099 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT800.U0099.Mandatory = false;
      MT800.U0098.Elements.Add((SwiftDefinitionElement) MT800.U0099);
      MT800.U009A = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT800.U0098.Elements.Add((SwiftDefinitionElement) MT800.U009A);
      MT800.U0097.Elements.Add((SwiftDefinitionElement) MT800.U0098);
      MT800.U009B = new SwiftTagDefinition("ReceiversCorrespondent_B_54B", "Receiver's Correspondent");
      MT800.U009B.TagName = ":54B:";
      MT800.U009C = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT800.U009C.Mandatory = false;
      MT800.U009B.Elements.Add((SwiftDefinitionElement) MT800.U009C);
      MT800.U009D = new SwiftTagSubItemDefinition("Location", "Location");
      MT800.U009D.Mandatory = false;
      MT800.U009B.Elements.Add((SwiftDefinitionElement) MT800.U009D);
      MT800.U0097.Elements.Add((SwiftDefinitionElement) MT800.U009B);
      MT800.U009E = new SwiftTagDefinition("ReceiversCorrespondent_B_54D", "Receiver's Correspondent");
      MT800.U009E.TagName = ":54D:";
      MT800.U009F = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT800.U009F.Mandatory = false;
      MT800.U009E.Elements.Add((SwiftDefinitionElement) MT800.U009F);
      MT800.U0001U0002 = new SwiftTagSubItemDefinition("NameAndAddress", "Name And Address");
      MT800.U009E.Elements.Add((SwiftDefinitionElement) MT800.U0001U0002);
      MT800.U0097.Elements.Add((SwiftDefinitionElement) MT800.U009E);
      MT800.U001C.Elements.Add((SwiftDefinitionElement) MT800.U0097);
      MT800.U0002U0002 = new SwiftTagDefinition("SenderToRecieverInformation_B_72", "Sender To Reciever Information");
      MT800.U0002U0002.TagName = ":72:";
      MT800.U0002U0002.Mandatory = false;
      MT800.U001C.Elements.Add((SwiftDefinitionElement) MT800.U0002U0002);
      MT800.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT800.U001C);
    }

    public class SequenceAClass : SwiftTagSequence
    {
      internal override SwiftDefinitionElement Definition
      {
        get
        {
          return (SwiftDefinitionElement) MT800.U000F;
        }
      }

      [Description("Purchase Agreement ID")]
      public Tag23 PurchaseAgreementID_A_23
      {
        get
        {
          return new Tag23((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0010);
        }
      }

      [Description("Purchase Agreement ID")]
      public Tag23 Tag23_PurchaseAgreementID_A
      {
        get
        {
          return this.PurchaseAgreementID_A_23;
        }
      }

      [Description("Sales Date")]
      public Tag30 SalesDate_30
      {
        get
        {
          return new Tag30((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0012);
        }
      }

      [Description("Sales Date")]
      public Tag30 Tag30_SalesDate
      {
        get
        {
          return this.SalesDate_30;
        }
      }

      [Description("Serial  Numbers")]
      public Tag26A[] SerialNumbers_A_26A
      {
        get
        {
          int index = -1;
          List<Tag26A> list = new List<Tag26A>();
          int count;
          do
          {
            ++index;
            Tag26A tag26A = new Tag26A((SwiftElement) this, index, (SwiftDefinitionElement) MT800.U0014);
            count = this.ListTags((SwiftElement) tag26A).Count;
            if (count > 0)
              list.Add(tag26A);
          }
          while (count > 0);
          return list.ToArray();
        }
      }

      [Description("Serial  Numbers")]
      public Tag26A[] Tag26A_SerialNumbers_A
      {
        get
        {
          return this.SerialNumbers_A_26A;
        }
      }

      [Description("Face Amount")]
      public Tag33B FaceAmount_A_33B
      {
        get
        {
          return new Tag33B((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0018);
        }
      }

      [Description("Face Amount")]
      public Tag33B Tag33B_FaceAmount_A
      {
        get
        {
          return this.FaceAmount_A_33B;
        }
      }

      [Description("Additional Amounts")]
      public Tag73 AdditionalAmounts_A_73
      {
        get
        {
          return new Tag73((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U001B);
        }
      }

      [Description("Additional Amounts")]
      public Tag73 Tag73_AdditionalAmounts_A
      {
        get
        {
          return this.AdditionalAmounts_A_73;
        }
      }

      internal SequenceAClass(SwiftElement parent, int index, bool createTags)
        : base(parent, index, createTags)
      {
      }

      public Tag26A AddSerialNumbers_A_26A()
      {
        return new Tag26A((SwiftElement) this, this.SerialNumbers_A_26A.Length, (SwiftDefinitionElement) MT800.U0014)
        {
          Value = string.Empty
        };
      }

      public void RemoveSerialNumbers_A_26A(Tag26A tag)
      {
        this.RemoveTag(tag.GetTag());
      }
    }

    public class SequenceBClass : SwiftTagSequence
    {
      internal override SwiftDefinitionElement Definition
      {
        get
        {
          return (SwiftDefinitionElement) MT800.U001C;
        }
      }

      [Description("Selling Agent Amount")]
      public Tag34B SellingAgentAmount_B_34B
      {
        get
        {
          return new Tag34B((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U001D);
        }
      }

      [Description("Selling Agent Amount")]
      public Tag34B Tag34B_SellingAgentAmount_B
      {
        get
        {
          return this.SellingAgentAmount_B_34B;
        }
      }

      [Description("Selling Agents Number Of PAs")]
      public Tag16A SellingAgentsNumberOfPAs_B_16A
      {
        get
        {
          return new Tag16A((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U007F);
        }
      }

      [Description("Selling Agents Number Of PAs")]
      public Tag16A Tag16A_SellingAgentsNumberOfPAs_B
      {
        get
        {
          return this.SellingAgentsNumberOfPAs_B_16A;
        }
      }

      [Description("Settlement Amount")]
      public Tag32A SettlementAmount_B_32A
      {
        get
        {
          return new Tag32A((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0081);
        }
      }

      [Description("Settlement Amount")]
      public Tag32A Tag32A_SettlementAmount_B
      {
        get
        {
          return this.SettlementAmount_B_32A;
        }
      }

      [Description("Remitting Agent")]
      public Tag52A RemittingAgent_B_52A
      {
        get
        {
          return new Tag52A((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0087);
        }
      }

      [Description("Remitting Agent")]
      public Tag52A Tag52A_RemittingAgent_B
      {
        get
        {
          return this.RemittingAgent_B_52A;
        }
      }

      [Description("Remitting Agent")]
      public Tag52D RemittingAgent_B_52D
      {
        get
        {
          return new Tag52D((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U008A);
        }
      }

      [Description("Remitting Agent")]
      public Tag52D Tag52D_RemittingAgent_B
      {
        get
        {
          return this.RemittingAgent_B_52D;
        }
      }

      [Description("Sender's Correspondent")]
      public Tag53A SendersCorrespondent_B_53A
      {
        get
        {
          return new Tag53A((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U008E);
        }
      }

      [Description("Sender's Correspondent")]
      public Tag53A Tag53A_SendersCorrespondent_B
      {
        get
        {
          return this.SendersCorrespondent_B_53A;
        }
      }

      [Description("Sender's Correspondent")]
      public Tag53B SendersCorrespondent_B_53B
      {
        get
        {
          return new Tag53B((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0091);
        }
      }

      [Description("Sender's Correspondent")]
      public Tag53B Tag53B_SendersCorrespondent_B
      {
        get
        {
          return this.SendersCorrespondent_B_53B;
        }
      }

      [Description("Sender's Correspondent")]
      public Tag53D SendersCorrespondent_B_53D
      {
        get
        {
          return new Tag53D((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0094);
        }
      }

      [Description("Sender's Correspondent")]
      public Tag53D Tag53D_SendersCorrespondent_B
      {
        get
        {
          return this.SendersCorrespondent_B_53D;
        }
      }

      [Description("Receiver's Correspondent")]
      public Tag54A ReceiversCorrespondent_B_54A
      {
        get
        {
          return new Tag54A((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0098);
        }
      }

      [Description("Receiver's Correspondent")]
      public Tag54A Tag54A_ReceiversCorrespondent_B
      {
        get
        {
          return this.ReceiversCorrespondent_B_54A;
        }
      }

      [Description("Receiver's Correspondent")]
      public Tag54B ReceiversCorrespondent_B_54B
      {
        get
        {
          return new Tag54B((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U009B);
        }
      }

      [Description("Receiver's Correspondent")]
      public Tag54B Tag54B_ReceiversCorrespondent_B
      {
        get
        {
          return this.ReceiversCorrespondent_B_54B;
        }
      }

      [Description("Receiver's Correspondent")]
      public Tag54D ReceiversCorrespondent_B_54D
      {
        get
        {
          return new Tag54D((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U009E);
        }
      }

      [Description("Receiver's Correspondent")]
      public Tag54D Tag54D_ReceiversCorrespondent_B
      {
        get
        {
          return this.ReceiversCorrespondent_B_54D;
        }
      }

      [Description("Sender To Reciever Information")]
      public Tag72 SenderToRecieverInformation_B_72
      {
        get
        {
          return new Tag72((SwiftElement) this, 0, (SwiftDefinitionElement) MT800.U0002U0002);
        }
      }

      [Description("Sender To Reciever Information")]
      public Tag72 Tag72_SenderToRecieverInformation_B
      {
        get
        {
          return this.SenderToRecieverInformation_B_72;
        }
      }

      internal SequenceBClass(SwiftElement parent, int index, bool createTags)
        : base(parent, index, createTags)
      {
      }
    }
  }
}
